﻿using System;
using WatiNCF.Steps;

namespace WatiNCF
{
    public interface IHasStepSupport<TClass>
    {
        /// <summary>
        /// Occurs when before step.
        /// </summary>
        event EventHandler<StepEventArgs> BeforeStep;
        /// <summary>
        /// Occurs when after step.
        /// </summary>
        event EventHandler<StepEventArgs> AfterStep;

        /// <summary>
        /// Finishes execution of any further steps before the specified step has started.
        /// </summary>
        /// <param name="stepName">The name of the step to finish after.</param>
        TClass FinishExecutionBeforeStep(string stepName);

        /// <summary>
        /// Finishes execution of any further steps after the specified step has completed.
        /// </summary>
        /// <param name="stepName">The name of the step to finish after.</param>
        /// <returns></returns>
        TClass FinishExecutionAfterStep(string stepName);
    }
}
